/**
 * 温度校准API测试脚本
 * 用于测试温度数据校准功能
 */

const API_BASE_URL = 'http://localhost:3000/api/health/temperature-calibration'

// 测试数据
const TEST_USER_ID = 68 // 使用示例数据中的用户ID

/**
 * 测试获取用户基线信息
 */
async function testGetBaseline() {
  console.log('\n=== 测试获取用户基线信息 ===')
  
  try {
    const response = await fetch(`${API_BASE_URL}?userId=${TEST_USER_ID}`)
    const result = await response.json()
    
    console.log('响应状态:', response.status)
    console.log('响应结果:', JSON.stringify(result, null, 2))
    
    return result
  } catch (error) {
    console.error('获取基线信息失败:', error)
    return null
  }
}

/**
 * 测试温度校准（2天时间跨度 + 锚定偏移量）
 */
async function testTemperatureCalibration() {
  console.log('\n=== 测试温度校准（2天时间跨度 + 锚定偏移量） ===')
  
  try {
    const response = await fetch(API_BASE_URL, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        userId: TEST_USER_ID,
        endDate: '2025-09-29' // 2天期间的结束日期
      })
    })
    
    const result = await response.json()
    
    console.log('响应状态:', response.status)
    
    if (result.success && result.data) {
      console.log('校准结果（简化版）:')
      console.log(`  基线温度: ${result.data.baseline_temp}°C`)
      console.log(`  期间平均温度: ${result.data.period_avg_temp}°C`)
      console.log(`  设备温度变化: ${result.data.change_from_baseline}°C`)
      console.log(`  锚定偏移量: ${result.data.anchor_offset}°C`)
      console.log(`  基线是否更新: ${result.data.is_baseline_updated}`)
      
      // 模拟前端核心体温计算
      const deviceTemp = result.data.period_avg_temp
      const anchorOffset = result.data.anchor_offset
      const coreTemp = deviceTemp + anchorOffset
      console.log(`\n前端计算示例:`)
      console.log(`  设备温度: ${deviceTemp}°C`)
      console.log(`  + 锚定偏移量: ${anchorOffset}°C`)
      console.log(`  = 核心体温: ${coreTemp.toFixed(2)}°C`)
      
    } else {
      console.log('校准失败:', result.error)
      if (result.progress) {
        console.log('基线建立进度:', result.progress)
      }
    }
    
    return result
  } catch (error) {
    console.error('温度校准失败:', error)
    return null
  }
}

/**
 * 测试不同时间段的温度校准
 */
async function testMultiplePeriods() {
  console.log('\n=== 测试多个时间段的温度校准 ===')
  
  const testDates = [
    '2025-09-29',
    '2025-09-15', 
    '2025-09-01'
  ]
  
  for (const endDate of testDates) {
    console.log(`\n--- 测试结束日期: ${endDate} ---`)
    
    try {
      const response = await fetch(API_BASE_URL, {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json'
        },
        body: JSON.stringify({
          userId: TEST_USER_ID,
          endDate: endDate
        })
      })
      
      const result = await response.json()
      
      console.log('响应状态:', response.status)
      if (result.success) {
        console.log('校准成功:', {
          baseline_temp: result.data.baseline_temp,
          period_avg_temp: result.data.period_avg_temp,
          change_from_baseline: result.data.change_from_baseline,
          period_info: result.data.period_info
        })
      } else {
        console.log('校准失败:', result.error)
        if (result.progress) {
          console.log('基线建立进度:', result.progress)
        }
      }
      
    } catch (error) {
      console.error(`测试日期 ${endDate} 失败:`, error)
    }
  }
}

/**
 * 主测试函数
 */
async function main() {
  console.log('开始测试温度校准API...')
  console.log('测试用户ID:', TEST_USER_ID)
  console.log('新功能：基于2天时间跨度的睡眠时段温度校准（优化版）')
  console.log('数据要求：30分钟采集一次，2天约32个睡眠时段数据点')
  
  // 首先测试获取基线信息
  await testGetBaseline()
  
  // 然后测试温度校准
  await testTemperatureCalibration()
  
  // 测试多个时间段
  await testMultiplePeriods()
  
  console.log('\n测试完成!')
}

// 运行测试
if (require.main === module) {
  main().catch(console.error)
}

module.exports = {
  testGetBaseline,
  testTemperatureCalibration,
  testMultiplePeriods
}
